﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spring.Objects.Factory.Support;

namespace Strongshell.Recoil.Core.Composition
{
    public class ObjectConfiguration
    {
        private readonly ObjectDefinitionBuilder builder;
        private readonly List<string> aliases = new List<string>();

        /// <summary>
        /// Gets the object builder used for this object configuration.
        /// </summary>
        public ObjectDefinitionBuilder Builder
        {
            get { return builder; }
        }

        /// <summary>
        /// Gets the aliases for this object configuration.
        /// </summary>
        public List<string> Aliases
        {
            get { return aliases; }
        }

        /// <summary>
        /// Gets the name of this object configuration. This is the name that the object definition will have
        /// in Spring.NET.
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Constructs an object configuration object.
        /// </summary>
        /// <param name="builder">The object builder used for this object configuration.</param>
        /// <param name="name">The name of this object configuration. This is the name that the object definition will have
        /// in Spring.NET.</param>
        public ObjectConfiguration(ObjectDefinitionBuilder builder, string name)
        {
            this.builder = builder;
            Name = name;
        }
    }
}
